package com.huohuo.javabasic.alg;

public class BinaryTree {
    public static void main(String[] args) {
        int [] ints ={7,8,2,3,35,9,22};
        //循环所有的父节点（从后向前循环）
        for(int i =(ints.length-1)/2;i>=1;i--){
            //先找到最大的儿子 假设最大的儿子为左儿子
            int maxIndex = i*2;
            //右儿子存在且比左儿子大
            if ((maxIndex+1)<ints.length && ints[maxIndex+1]>ints[maxIndex]){
                maxIndex++;
            }
            //如果最大的儿子与父亲大
            if (ints[maxIndex]>ints[i]){
                int temp = ints[maxIndex];
                //与最大儿子互换位置
                ints[maxIndex] = ints[i];
                ints[i]=temp;
            }

        }
        //将根节点与最后一个节点交换
        int data = ints[1];
        ints[1]=ints[ints.length-1];
        ints[ints.length-1] = data;

        for (int i =1;i<ints.length;i++){
            System.out.print(ints[i]+" ");
        }


    }

}
